2. 필드 옮기기

필드를 한 곳에서 다른 곳으로 이동
즉, 데이터 구조의 변경
아래 목록에서 "레코드"는 "클래스"나 "객체"로 치환 가능

  • 함수에 어떤 레코드를 넘길 때 마다 또 다른 레코드의 필드도 함께 넘기고 있을 때
  • 한 레코드를 변경하는데 다른 레코드의 필드까지 변경해야 할 때
  • 구조체 여러 개에 정의된 똑같은 필드들을 갱신해야 할 때

절차


  1. 소스 필드가 캡슐화되어 있지 않다면 캡슐화한다.
  2. 테스트한다.
  3. 타깃 객체에 필드(와 접근자 메서드들)을 생성한다.
  4. 정적 검사를 수행한다.
  5. 소스 객체에서 타깃 객체를 참조할 수 있는지 확인한다.
  6. 접근자들이 타깃 필드를 사용하도록 수정한다.
  7. 테스트한다.
  8. 소스 필드를 제거한다.
  9. 테스트한다.

예시 코드

😞 Before

class Customer {
    get plan() {
        return this._plan;
    }

    get discountRate() {
        returh this._discountRate
    }
}

😃 After

class Customer {
    get plan() {
        return this._plan;
    }

    get discountRate() {
        returh this.plan.discountRate
    }
}

results matching ""

    No results matching ""